package com.ruoyi.zsix.service;

import com.ruoyi.common.core.domain.process.DeploymentInfo;
import com.ruoyi.common.core.domain.process.FlowSort;
import com.ruoyi.zsix.domain.model.ProcessDefinitionParams;
import com.ruoyi.zsix.domain.model.TaskDefinition;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;

public interface IProcessDefinitionService {
    /**
     * 获取流程分类
     * @return
     */
    List<FlowSort> getFlowSort();

    /**
     * 获取全部流程分类树
     * @return
     */
    List<FlowSort> getFlowSortTree();
    /**
     * 获取流程发起页面数据
     * @return
     */
    HashMap getSatrtPageData();
    /**
     * 获取流程部署列表
     * @return
     */
    HashMap<String ,Object> getDeployment(DeploymentInfo deploymentInfo);
    /**
     * 获取流程模板
     * @param deploymentId
     */
    void getDeploymentXmlById(HttpServletResponse response,String deploymentId);
    /**
     * 流程属性
     * @param process_key
     * @return
     */
    ProcessDefinitionParams processProperties(String process_key);
    /**
     * 保存流程属性
     * @return
     */
    String saveProcessProperties(ProcessDefinitionParams processDefinitionParams);
    /**
     * 发布流程
     * @param BPMNXml
     * @return
     */
    String deployWithBPMNJS(String BPMNXml);
    /**
     * 删除流程定义
     * @param deploymentId
     * @return
     */
    String deleteDefinition(String deploymentId);
    /**
     * 节点属性
     * @param task_def_key
     * @return
     */
    TaskDefinition userTaskProperties(String task_def_key);
    /**
     * 更新节点属性
     * @param taskDefinitionParams
     * @return
     */
    String saveUserTaskProperties(TaskDefinition taskDefinitionParams);
    /**
     * 新增流程类别
     * @param flowSort
     * @return
     */
    String addFlowSort(FlowSort flowSort);
    /**
     * 流程类别保存修改
     * @param flowSort
     * @return
     */
    String saveFlowSort(FlowSort flowSort);
    /**
     * 删除流程分类
     * @param flowSort
     * @return
     */
    String deleteFlowSort(FlowSort flowSort);
}
